﻿<?php
class poi
{
    var $database;

    public function title()
    {
        return 'Główna';
    }
    function form_add()
    {
        include('formAddPoints.php');
    }

function resize($filename )
{
   ECHO basename  ($filename);
   list($width, $height) = getimagesize($filename);
   if(($width > 320) || ($height > 240))
   {
      if($width > $height)
      $ratio = 320/$width;
      else
      $ratio = 240/$height;

      $newwidth = $ratio*$width;
      $newheight = $ratio*$height;
      $thumb = imagecreatetruecolor($newwidth, $newheight);
      switch (exif_imagetype($filename))
      {

         case IMAGETYPE_GIF:
            $source = imagecreatefromgif($filename);
            break;
         case IMAGETYPE_JPEG:
            $source = imagecreatefromjpg($filename);
            break;
         case IMAGETYPE_PNG:
            $source = imagecreatefrompng($filename);
            break;
         default:
            $source = imagecreatefromjpg($filename);
            break;
      }
      imagecopyresized($thumb, $source, 0, 0, 0, 0, $newwidth, $newheight, $width, $height);
      imagejpeg($thumb, $filename, 100);
   }
}

function addFile()
{
   $typy = array('image/gif', 'image/jpeg', 'image/png', 'image/jpg');
   if (is_uploaded_file($_FILES['plik']['tmp_name']))
   {
      if(!in_array($_FILES['plik']['type'], $typy, true))
      {
         echo "Nie dozwolony format pliku!";
         exit;
      } 
      else
      {
         if($_FILES['plik']['size']<256000 && $_FILES['plik']['size']>1  )
         {
            $plik_tmp = $_FILES['plik']['tmp_name'];
            $plik_nazwa = $_FILES['plik']['name'];
            $plik_rozmiar = $_FILES['plik']['size']; 
            move_uploaded_file($plik_tmp, "upload/$plik_nazwa");
            echo "Plik: <strong>$plik_nazwa</strong> o rozmiarze
           <strong>$plik_rozmiar bajtów</strong> został przesłany na serwer!";
            $this->resize("upload/$plik_nazwa");
         }
      } 
   }
  
}

function addPoints()
{
   if ( $_SERVER['REQUEST_METHOD'] == 'POST' )
   {
      $lon = mysql_real_escape_string( $_POST['lon'] );
      $lat = mysql_real_escape_string( $_POST['lat'] );
      $name = mysql_real_escape_string( $_POST['name'] );
      $desc = mysql_real_escape_string( $_POST['desc'] );
      $cat_id = mysql_real_escape_string( $_POST['podkategoria'] );
      
      $insert = "INSERT INTO `points` SET `id_cat` = '$cat_id' , `name` = '$name', `lon` = '$lon', `lat` = '$lat', `desc` = '$desc'";
      global $database;
      $database->query($insert);
    }
}
function addUser()
{
   if ( $_SERVER['REQUEST_METHOD'] == 'POST' )
   {
       global $id, $database, $imie, $nazw, $email, $login, $pass, $kod_txt, $err;
       if(($imie == "") || ($nazw == "") || ($login == "") || ($email == "") || ($pass == "") )
		{
         echo 'Wypełnij wszystkie dane z formularza';
			include('formAddUser.php');
         return;
		}//||
      if($_SESSION['kod_sesji']!= $kod_txt )
      {
         $err = 1;
         include('formAddUser.php');
         return;
      }
      $database->query("SELECT count(ID) as replay FROM users WHERE mail='$email'");
		$r=mysql_fetch_assoc($database->result);
		if($r['replay'] > 0)
		{
         $err = 3;
         include('formAddUser.php');
         return;
		}
      $database->query("SELECT count(ID) as replay FROM users WHERE login='$login'");
		$r=mysql_fetch_assoc($database->result);
		if($r['replay'] > 0)
		{
         $err = 2;
         include('formAddUser.php');
         return;
		}
      //$this->sentMail($email, $login);
      $insert = "INSERT INTO users VALUES(null,'$imie', '$nazw','$login', '".sha1($pass)."','$email', now(), now(), 1, 1)";
   $database->query($insert);
echo 'Utworzono nowe konto użytkownika '.$login.'.';
   }
}

function sentMail($email, $login)
{
      $sha_short = sha1($email.$login);
   //wysylanie maila
		$from = 'Administracja serwisu POInts<ala_ma_kota@xlaski.org.pl>';
		$rn=(eregi('windows',$_ENV['OS']))?"\r\n":"\n";
		$mailHeader = "MIME-Version: 1.0$rn";
		$mailHeader .= "Content-Type:text/html; charset=iso-8859-2$rn";
		$mailHeader .= "From: alamakota@ale.nie.ma.psa.pl$rn";
   $link = "index.php?module=poi&action=confirm&h=";
   $linkdea = "index.php?module=poi&action=delete&h=";
   $body = "<br><h3>Witaj " .$login. "!</h3>";
   $body .= "<br>Dziękujemy za rejestrację w serwisie POInts.";
   $body .= "<br>Aby dokończyć rejestrację kliknij w poniższy link: <br>";
   $body .= "<a href =". $link.$sha_short."target=\"_blank\">".$link.$sha_short."</a>";
   $body .= "<br><br><hr>Jeśli nie rejestrowałeś się w serwisie, kliknij poniższy link, aby usunąć konto ";
     $body .= "<a href =". $linkdea.$sha_short."target=\"_blank\">".$linkdea.$sha_short."</a>";
//echo $body;
/*if(mail($email, "Dziękujemy za rejestrację", $body, $mailHeader))
		{
			echo 'poszło!';
		}*/
}
function addUCat()
{
   $nazwa = mysql_real_escape_string( $_POST['nazwa'] );
   mysql_query("INSERT INTO ucat SET name = '$nazwa' ");
   //$zid = mysql_insert_id();
}

function addCat()
{
   $nazwa = mysql_real_escape_string( $_POST['nazwa'] );
   $ucat = $_POST['kategoria'];
   mysql_query("INSERT INTO cat SET name = '$nazwa', id_ucat = (SELECT ID FROM `ucat` WHERE `name` = '$ucat' )");
}

function exportKml()
{
    //var_dump($_POST['checkbox']);
    global $database;
    $checked = $_POST['checkbox'];
    $fname = $_POST['fname'];

    if (empty($checked) || empty($fname))
    {//nie zaznaczono zadnego checkboxa
        echo '<br>Aby wyeksportować punkty zaznacz pole obok wybranych punktów i podaj nazwe pliku<br>';
        return;
    }
    else
    {
        $xml = new XMLWriter();
        $xml->openMemory();
        $xml->setIndent(true);
        $xml->setIndentString(' ');
        $xml->startDocument('1.0', 'UTF-8');
        $xml->startElement("kml");
        $xml->startElement("Folder");

        foreach($checked as $val)
        {
            $s .='ID='. $val . ' OR ';
        }
        $s = substr($s, 0, strlen($s)-4);
        $select = "SELECT * FROM points WHERE ". $s;
        $database->query($select);
        while ($r=mysql_fetch_assoc($database->result))
        {//przetwarzanie pobranych punktów
            //print_r ($r);
            $xml->startElement("Placemark");
            $xml->writeElement("name", $r['name']);
            $xml->writeElement("description", $r['desc']);
            $xml->startElement("Point");
            $xml->writeElement("coordinates", $r['lon'].','.$r['lat']);
            $xml->endElement(); //point
            $xml->endElement();//placemark
        }
        $xml->endElement();//folder
        $xml->endElement(); //kml
        $xml->endDocument();
        //zapis do pliku
        $xml_folder = "./xml/";
        $filename = $xml_folder.$fname.".kml";
        $fp = fopen($filename, 'w');
        fwrite($fp, $xml->outputMemory());
        fclose($fp);
    }
    echo 'zapisano dane do pliku '. $filename;
}

function exportGpx()
{
    global $database;
    $checked = $_POST['checkbox'];
    $fname = $_POST['fname'];
 //   print_r($checked);

    if (empty($checked) || empty($fname))
    {//nie zaznaczono zadnego checkboxa
        echo '<br>Aby wyeksportować punkty zaznacz pole obok wybranych punktów i podaj nazwe pliku<br>';
        return;
    }
    else
    {
        $xml = new XMLWriter();
        $xml->openMemory();
        $xml->setIndent(true);
        $xml->setIndentString(' ');
        $xml->startDocument('1.0', 'UTF-8');
        $xml->startElement("gpx");
       // $xml->writeAttribute("xmlns","http://www.topografix.com/GPX/1/1");
        $xml->writeAttribute("version","1.1");

        foreach($checked as $val)
        {
            $s .='ID='. $val . ' OR ';
        }
        $s = substr($s, 0, strlen($s)-4);
       // echo $s;
        $select = "SELECT * FROM points WHERE ". $s;
        $database->query($select);
        while ($r=mysql_fetch_assoc($database->result))
        {//przetwarzanie pobranych punktów
          //  print_r ($r);
            $xml->startElement("wpt");
            $xml->writeAttribute("lat",$r['lon']);
            $xml->writeAttribute("lon",$r['lat']);
            $xml->writeElement("name", $r['name']);
            $xml->writeElement("desc", $r['desc']);
            $xml->endElement();//wpt
        }
        $xml->endElement(); //gpx
        $xml->endDocument();
        //zapis do pliku
        $xml_folder = "./xml/";
        $filename = $xml_folder.$fname.".gpx";
        $fp = fopen($filename, 'w');
        fwrite($fp, $xml->outputMemory());
        fclose($fp);
    }
    echo ' zapisano dane do pliku '. $filename;
}

function kmlXslt()
{
    $xml_folder = "./xml/";
    $fname = $_POST['fname'];
    $sXML= $xml_folder.$fname.".kml";

    if ($_POST['xslt']=='kml->html')
    {
        $sXSL = './xml/kmlToHtml.xsl';
    }
    else
    {//export do gpx
        $sXSL = './xml/kml2gpx.xsl';
        $out = './xml/temp.gpx';
       
    }
    $xslDoc = new DOMDocument();
    $xslDoc->load($sXSL);

    $xmlDoc = new DOMDocument();
    $xmlDoc->load($sXML);

    $proc = new XSLTProcessor();
    $proc->importStylesheet($xslDoc);
    echo '<br>';
    if ($_POST['xslt']=='kml->html')
    {
        echo $proc->transformToXML($xmlDoc);
    }
    else
    {
        $xmlOut = new DOMDocument();
        $xmlOut->loadXML($proc->transformToXML($xmlDoc));
        $xmlOut->save($out);
        echo "Przekonwertowano plik ". $sXML." do pliku ".$out.".";
    }
}
function Xslt()
{
    $xml_folder = "./xml/";
    $fname = "k";
    $sXML= $xml_folder.$fname.".kml";
    $sXSL = './xml/testowy2.xsl';

    echo $sXSL;
    $xslDoc = new DOMDocument();
    $xslDoc->load($sXSL);

    $xmlDoc = new DOMDocument();
    $xmlDoc->load($sXML);

    $proc = new XSLTProcessor();
    $proc->importStylesheet($xslDoc);
    echo '<br>';
    echo $proc->transformToXML($xmlDoc);

}
function Search()
{
   if ( $_SERVER['REQUEST_METHOD'] == 'POST' )
   {
      echo '<pre>';
      //print_r( $_POST);
      $search=$_POST['search'];
      $kat = $_POST['kategoria'];
      $opis = mysql_real_escape_string( $_POST['nazwa'] );
      $podkat = mysql_real_escape_string( $_POST['podkategoria'] );
      $szukany_tekst = htmlspecialchars($_POST['nazwa']);
      //print_r( $search);

      echo "<br>";

      foreach($search as $val)
      {
         $s .= $val . ' ';
      }
      echo $s;
      if (empty($search))
      {//nie zaznaczono zadnego checkboxa
         echo '<br>Abywyszukać punkty zaznacz pole obok kryterium wyszukiwania.<br>';
         return;
      }
      else
      {
         $select = "SELECT points . * , cat.name AS cname, ucat.id AS id_ucat
           FROM (points LEFT JOIN cat
           ON points.id_cat = cat.id )
LEFT JOIN ucat ON cat.id_ucat = ucat.id";

         $where = array();
         if ( in_array('kat', $search) && !empty($kat) )
         {
            $where[] =  "cat.id_ucat = " . (int)$kat;
         }
         if ( in_array('podkat', $search) && !empty($podkat))
         {
            $where[] = "id_cat = " . (int)$podkat;
         }
         if ( in_array('opis', $search) )
         {

            $where[] = "points.desc LIKE '%" . $opis . "%'";
            $where[] = "points.name LIKE '%" . $opis . "%'";
         }
         if ( !empty($where) )
         {
            $select .= ' WHERE ' . implode(' OR ', $where);
         }
         global $database;
         $database->query($select);

         while ($r=mysql_fetch_assoc($database->result))
         {
          //  print_r ($r);
         }
         echo '</pre>';
      }
   }
}

function addToList()
{
   $nowaNazwa = strtolower (mysql_real_escape_string( $_POST['listNameInput'] ));
   $arr = explode('.',$_POST['selectlist'],2 );
   $nazwaListy = $arr[1];
   $id_listy = $arr[0];
   $checked = $_POST['checkbox'];
   if ( empty($checked))
   {//nie zaznaczono zadnego checkboxa
      echo '<br>Aby dodac punkty do listy zaznacz pole obok wybranych punktów';
      return;
   }
   if ($id_listy == -1)
   {
      echo 'Nie wybrales listy';
      return;
   }
   else if ($id_listy == 0 && $nowaNazwa== '')
   {
      echo 'Nie podałes nazwy listy';
      return;
   }
   global $database;
   $user = $_SESSION['ID'];
   $lastID = 0;
   if ($id_listy == 0 )
   {
      $select = "SELECT count(ID) as replay FROM lists WHERE ID_USER = '$user' AND name = '$nowaNazwa'";
      $database->query($select);
      $r=$database->getResult();
      if($r['replay'] > 0)
      {
         echo 'Posiadasz już listę o nazwie ' .$nowaNazwa ;
         return;
      }
      //make fisrt insert to lists table AKA create new list
      $insert = "INSERT INTO lists SET name = '$nowaNazwa', ID_USER='$user'";
      $database->query($insert);
      if (!$database->getReturn())
      {//gdy insert zwrócił false
         echo '<br>Nie udało się dodać listy ' .$nowaNazwa .' do bazy danych';
         return;
      }
      $lastID = mysql_insert_id();
      echo $lastID;
   }
   if($id_listy >0)
   {
      $nowaNazwa = $nazwaListy;
      $lastID = $id_listy;
   }

   $added = 0; //licznik dodanych punktow

   foreach($checked as $val)  //dla kazdego zaznaczonego punktu
   {
      //spr czy istnieje na wybranej liscie
      $select = "SELECT count(ID) as replay FROM `list-poi` WHERE ID_LIST = '$lastID' AND ID_POINT='$val'";
      $database->query($select);
      $r=$database->getResult();
      if($r['replay'] > 0)
      {//istnieje juz na liscie
         $select2 ="SELECT name FROM points WHERE ID = '$val'";
         $database->query($select2);
         $r=$database->getResult();
         if ($r['name'])
         {
            echo '<br>Na liście znajduje się już punkt o nazwie ' .$r['name'];
         }
      }
      else
      {//dodanie do listy
         $insert = "INSERT INTO `list-poi` SET ID_LIST = '$lastID', ID_POINT='$val'";
         $database->query($insert);
         $added++;
      }
   }
   if (!$database->getReturn())
   {//gdy insert zwrócił false
      echo 'Nie udało się dodać punktów do listy ' .$nowaNazwa ;
      return;
   }
   if ($added >0)
   {
      echo 'Pomyślnie dodano '.$added.' punkty/ów do listy '.$nowaNazwa ;
   }
   else
      echo '<br>Do listy '.$nowaNazwa.' nie dodano żadnych punktów';
}

function listing($path){
    print 'Dotychczas utworzone pliki xml, kml, gpx:<br/>';
    if ($handle = opendir($path))
    {
        while (false !== ($file = readdir($handle)))
        {
            if ($file<>"." and $file<>"..")
                if (is_readable($path.$file))
                    if(!is_dir($path.$file))
                    {
                       print
                       $file.'<br/>';
                        //print '<b>Katalog '.$file.'</b><br/>';
                       // printFileInDir($path.$file.'/');
                    }
                   // else print $file.'<br/>';
        }
        closedir($handle);
    }
}

function Gmaps()
{
    include 'gmaps_test.php';
}

function indexAction($db)
{
   $this->database = $db;
   global $action;

   switch( $action)
   {
      case 'formAddPoints':
         include('formAddPoints.php');
         break;
      case 'formAddUser':
            include('formAddUser.php');
            break;
      case 'formSearch':
            include('formSearch.php');
            break;
      case 'addPoints':
         $this->addPoints();
         echo 'Poprawnie dodano punkt.';
         break;
      case 'addFile':
         $this->addFile();
         break;
      case 'addUCat':
         include('showUcat.php');
         break;
      case 'addUser':
         $this->addUser();
         break;
      case 'search':
         include('formSearch.php');
         include('showSearchResult.php');
         break;
      case 'login':
         if($_POST['pass'] == 'admin')
         {
            if($_POST['login'] == 'admin')
            {
               $_SESSION['login'] = 1;
               echo 'admin zalogowany<br>';
               ////header("Location: index.php");
            }
         }
         break;
      case 'xml':
      case 'export':
         if(isset($_POST['kml']))
         {
            $this->exportKml();
               }
               if(isset($_POST['gpx']))
               {
                  $this->exportGpx();
               }
               if(isset($_POST['xslt']))
               {
                  $this->kmlXslt();
               }
               if(isLoggedIn()>0 && isset($_POST['addToList']))
                {
                    $this->addToList();
                }
               break;
            case 'gpx':
               $this->exportGpx();
               break;
            case 'xsl':
               include('formXSL.php');
               break;
            case 'xsl2':
               $this->Xslt();
               break;
            case 'gmaps':
                $this->Gmaps();
               break;
            case 'gmaps2':
               include('gmaps_test2.php');
               break;
            case 'gmaps3':
               include('gmaps_test3.php');
               break;
            case 'gmaps4':
               include('gmaps_test5.php');
               break;
            case 'gmaps5':
               include('gmaps_test6.php');
               break;
            default :
               include('showAllPoints.php');
               break;
     }
	}
}


?>
